package com.spring.demo6.factory;

import java.lang.annotation.*;

/**
 * Autowired注解会被AutowiredAnnotationBeanPostProcessor进行处理
 *
 * 查找过程：
 * -> 按类型找
 * -> 通过限定符@Qualifier过滤
 * -> @Primary主要候选者
 * -> @Priority优先级
 * -> 根据名称找（字段名称或者参数名称)
 */
@Documented
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAutowired {

    // 标注的对象是否必须注入，可能这个对象在容器中不存在，如果为true的时候，找不到匹配的候选者就会报错，为false的时候，找不到也没关系
    boolean required() default true;
}
